/*
 * @Author: 一盏青灯欲锁魂
 * @Date: 2021-06-15 16:35:58
 * @LastEditTime: 2021-06-25 09:47:49
 * @Description: 定时任务
 * @FilePath: \nest_demo\src\module\index\index.service.ts
 */
import { Injectable, Logger } from '@nestjs/common';
import { Cron, Interval, Timeout } from '@nestjs/schedule';

/*
    * 定时任务步骤：
    *   1. 安装nestjs/schedule， -> npm i --save @nestjs/schedule
    *   2. 使用指定装饰器装饰需要执行定时任务的方法
    *   3. 在app.module.ts中注入
*/

@Injectable()
export class TimingService{
    private readonly logger = new Logger(TimingService.name);

    /*
        * @Cron('******') -> @Cron('秒 分 小时 天(或每月几号) 月 天(或者每周几号) ')
        * 详见：https://docs.nestjs.cn/7/techniques?id=%e5%ae%9a%e6%97%b6%e4%bb%bb%e5%8a%a1
    */ 
    @Cron('45 * * * * *')
    sendMessage(){
        this.logger.debug("定时信息发送成功");
    }

    // 定时循环
    @Interval(10000)
    sendHello(){
        this.logger.debug("每10秒执行一次");
    }

    // 延迟执行
    @Timeout(5000)
    sendBye(){
        this.logger.debug("延迟5秒后执行，只执行一次")
    }
}